package com.ssy.lingxi.order.service.mobile;


import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.order.model.vo.basic.request.OrderAgreeVO;
import com.ssy.lingxi.order.model.vo.basic.request.OrderIdVO;
import com.ssy.lingxi.order.model.vo.mobile.request.MobileVendorOrderPageVO;
import com.ssy.lingxi.order.model.vo.mobile.request.MobileVendorUpdateFreightVO;
import com.ssy.lingxi.order.model.vo.mobile.request.MobileVendorValidateOrderPageVO;
import com.ssy.lingxi.order.model.vo.mobile.response.MobileVendorOrderDetailVO;
import com.ssy.lingxi.order.model.vo.mobile.response.MobileVendorOrderQueryVO;
import com.ssy.lingxi.order.model.vo.mobile.response.MobileVendorValidateSubscriptVO;
import com.ssy.lingxi.order.model.vo.vendor.request.VendorUpdatePayRateVO;
import org.springframework.http.HttpHeaders;

import java.util.List;

/**
 * App - 业务员（销售）订单相关接口
 * @author wyx
 * @version 2.0.0
 * @date 2022-03-22
 **/
public interface IMobileVendorOrderService {
    /**
     * 查看绑定订单 - 分页查询订单
     * @param headers Http头部信息
     * @param pageVO  接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MobileVendorOrderQueryVO>> pageOrders(HttpHeaders headers, MobileVendorOrderPageVO pageVO);

    /**
     * 查看绑定订单 - 订单详情
     * @param headers Http头部信息
     * @param idVO    接口参数
     * @return 查询结果
     */
    Wrapper<MobileVendorOrderDetailVO> getOrderDetail(HttpHeaders headers, OrderIdVO idVO);

    /**
     * 订单审核 - 订单数量角标
     * @param headers Http头部信息
     * @return 查询结果
     */
    Wrapper<List<MobileVendorValidateSubscriptVO>> getOrderSubscripts(HttpHeaders headers);

    /**
     * 订单审核 - 分页查询列表
     * @param headers Http头部信息
     * @param pageVO    接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MobileVendorOrderQueryVO>> pageValidateOrders(HttpHeaders headers, MobileVendorValidateOrderPageVO pageVO);

    /**
     * “待提交审核订单” - 查询订单列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MobileVendorOrderQueryVO>> pageSubmitToConfirmOrders(HttpHeaders headers, MobileVendorValidateOrderPageVO pageVO);

    /**
     * “分页查询订单列表、待提交审核订单” - 修改运费和商品价格
     * @param headers Http头部信息
     * @param freightVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> updateFreightAndProductPrices(HttpHeaders headers, MobileVendorUpdateFreightVO freightVO);

    /**
     * “待提交审核订单” - 修改支付比例
     * @param headers Http头部信息
     * @param payRateVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> updatePayRate(HttpHeaders headers, VendorUpdatePayRateVO payRateVO);

    /**
     * “待审核订单（一级）” - 查询订单列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MobileVendorOrderQueryVO>> pageToValidateGradeOneOrders(HttpHeaders headers, MobileVendorValidateOrderPageVO pageVO);

    /**
     * “待提交审核订单” - 提交审核
     * @param headers Http头部信息
     * @param agreeVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> submitToConfirmOrder(HttpHeaders headers, OrderAgreeVO agreeVO);

    /**
     * “待审核订单（一级）” - 提交审核
     * @param headers Http头部信息
     * @param agreeVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> validateOrderGradeOne(HttpHeaders headers, OrderAgreeVO agreeVO);

    /**
     * “待审核订单（二级）” - 查询订单列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MobileVendorOrderQueryVO>> pageToValidateGradeTwoOrders(HttpHeaders headers, MobileVendorValidateOrderPageVO pageVO);

    /**
     * “待审核订单（二级）” - 提交审核
     * @param headers Http头部信息
     * @param agreeVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> validateOrderGradeTwo(HttpHeaders headers, OrderAgreeVO agreeVO);

    /**
     * “待确认订单” - 查询订单列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MobileVendorOrderQueryVO>> pageToConfirmOrders(HttpHeaders headers, MobileVendorValidateOrderPageVO pageVO);

    /**
     * “待确认订单” - 确认
     * @param headers Http头部信息
     * @param agreeVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> confirmOrder(HttpHeaders headers, OrderAgreeVO agreeVO);
}
